"""
写一个Bicycle(自行车)类,有run(骑行)方法,
调用时显示骑行里程km(骑行里程为传入的数字):
再写一个电动自行车类EBicycle继承自Bicycle,
添加电池电量valume属性,通过参数传入, 同时有两个方法：
1. fill_charge(vol) 用来充电, vol 为电量
2. run(km) 方法用于骑行,每骑行10km消耗电量1度,
当电量消耗尽时调用Bicycle的run方法骑行，
通过传入的骑行里程数，显示骑行结果

"""
# 定义一个自行车类
class Bicycle:

    # 骑行方法，传入公里数
    def run(self,km):

        # 注意：这里打印的是km，不是self.km,因为km并没有经过self修饰，是偶同变量，不是实例变量
        print(f"我用脚骑行里程是{km}")


class EBicycle(Bicycle):

    # 构造方法，传入电池电量
    def __init__(self,valume):
        self.valume =valume

    def fill_charge(self,vol):
        self.valume = self.valume + vol
        print(f"充了{vol}度电，现在的电量为{self.valume}")

    """
    2. run(km) 方法用于骑行,每骑行10km消耗电量1度,
    当电量消耗尽时调用Bicycle的run方法骑行，
    通过传入的骑行里程数，显示骑行结果
    """
    def run(self,km):
        # 当前最多骑多远
        power_km =self.valume*10

        if power_km>km:
            print(f"我用电池骑行了{km}")

        else:
            print(f"我用电池骑行了{power_km}公里")

            # 剩下使用脚骑行
            # 1.非继承调用
            # bike = Bicycle()
            # bike.run(km - power_km)


            # 2.继承调用(建议使用)，实际上super()的作用就是  bike = Bicycle()
            super().run(km-power_km)

# 实例化一个对象
# bike = Bicycle

# 实例化一个对象
ebike = EBicycle(10)
ebike.fill_charge(10)

ebike.run(300)
